// HandlerGraficar.cpp: implementation of the HandlerGraficar class.
//
//////////////////////////////////////////////////////////////////////

#include "HandlerGraficar.h"
#include "Cliente.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

HandlerGraficar::HandlerGraficar(Cliente* cliente)
{
	this->cliente = cliente;
}

HandlerGraficar::~HandlerGraficar()
{

}

void HandlerGraficar::notify(void* data){
	char* datachar = (char*)data;
	PosicionPad pad1,pad2;
	PosicionTejo posTejo;
	Puntaje puntaje1,puntaje2;
	Bonus bonus;
	int offset=0;
	memcpy(reinterpret_cast<char*>(&pad1),datachar+offset,sizeof(pad1));
	offset+=sizeof(pad1);
	
	memcpy(reinterpret_cast<char*>(&pad2),datachar+offset,sizeof(pad2));
	offset+=sizeof(pad2);

	memcpy(reinterpret_cast<char*>(&posTejo),datachar+offset,sizeof(posTejo));
	offset+=sizeof(posTejo);

	memcpy(reinterpret_cast<char*>(&puntaje1),datachar+offset,sizeof(puntaje1));
	offset+=sizeof(puntaje1);
	
	memcpy(reinterpret_cast<char*>(&puntaje2),datachar+offset,sizeof(puntaje2));
	offset+=sizeof(puntaje2);

	memcpy(reinterpret_cast<char*>(&bonus),datachar+offset,sizeof(bonus));
	offset+=sizeof(bonus);
	
	if(this->cliente->getPad1()!=NULL){
		this->cliente->getPad1()->setPInicial(pad1.puntoInicial);
		//this->cliente->getPad1()->getPInicial().setX(pad1.puntoInicial.getX());
		//this->cliente->getPad1()->getPInicial().setY(pad1.puntoInicial.getY());
		this->cliente->getPad1()->setAlto(pad1.alto);
		this->cliente->getPad1()->setAncho(pad1.ancho);
	}
	//this->cliente->getPad2()->clear();
	if(this->cliente->getPad2()!=NULL){
		this->cliente->getPad2()->setPInicial(pad2.puntoInicial);
		//this->cliente->getPad2()->getPInicial().setX(pad2.puntoInicial.getX());
		//this->cliente->getPad2()->getPInicial().setY(pad2.puntoInicial.getY());
		this->cliente->getPad2()->setAlto(pad2.alto);
		this->cliente->getPad2()->setAncho(pad2.ancho);
	}		
	//this->cliente->getTejo()->clear();
	if(this->cliente->getTejo()!=NULL)
		this->cliente->getTejo()->setPCentro(posTejo.puntoInicial);
	//this->cliente->getTejo()->getCentro().setY(posTejo.puntoInicial.getY());
	this->cliente->getTejo()->setRadio(posTejo.radio);
	this->cliente->setPuntaje1(puntaje1.valor);
	this->cliente->setPuntaje2(puntaje2.valor);
	this->cliente->setPosBonus(bonus.posicion);
	this->cliente->setTipoBonus(bonus.esFinBonus);
	this->cliente->setEstadoBonus(bonus.estado);
	//this->cliente->graficar();
}